package com.nutricia.core.ex;

import org.apache.commons.lang3.StringUtils;

/**
 * 业务异常代码
 *
 * @author: huangsheng
 * @date: 2017/10/19 上午11:05
 */
public enum BizErrorCode {

    /**
     * 未知异常
     */
    UNKNOWN_ERROR("999", "未知异常"),

    /**
     * 系统异常
     */
    SYSTEM_ERROR("000", "系统异常"),

    /**
     * 参数为空
     */
    PARAM_EMPTY("001", "参数为空"),

    /**
     * 参数设置异常
     */
    PARAM_ERROR("002", "参数设置异常"),

    /**
     * 账号错误
     */
    USER_LOGIN_NAME_ERROR("003", "登入账号错误"),

    /**
     * 密码错误
     */
    LOGIN_PASSWORD_ERROR("004", "密码错误"),

    /**
     * 用户被禁用
     */
    USER_IS_DISABLE("005", "用户被禁用"),

    /**
     * 用户登入名称已经存在
     */
    USER_LOGIN_NAME_IS_EXIST("006", "用户登入名称已经存在"),

    /**
     * 用户不存在
     */
    USER_IS_NOE_EXIST("007", "用户不存在"),

    /**
     * 角色code已经存在
     */
    ROLE_CODE_IS_EXIST("008", "角色code已经存在"),

    /**
     * 用户不存在
     */
    ROLE_IS_NOE_EXIST("009", "角色不存在"),

    /**
     * 权限code已经存在
     */
    PERMISSION_CODE_IS_EXIST("010", "权限code已经存在"),

    /**
     * 权限不存在
     */
    PERMISSION_IS_NOE_EXIST("011", "权限数据不存在"),
	
	
    /**
     * 会议名称已存在
     */
	MEETING_NAME_IS_EXIST("012","会议名称已经存在"),
	
	/**
	 * 会议内部参会人员重复添加
	 */
	MEETING_INSIDE_PEOPLE_EXIST("013","会议内部参会人员重复添加"),
	
	/**
	 * 会议外部参会人员重复添加
	 */
	MEETING_EXTERNAL_PEOPLE_EXIST("014","会议外部参会人员重复添加");
	
    /**
     * 业务异常码
     */
    private String code;

    /**
     * 业务异常描述
     */
    private String description;


    BizErrorCode(String code, String description) {
        this.code = code;
        this.description = description;
    }

    /**
     * 根据异常码获取异常枚举对象
     *
     * @param code 异常码
     * @return 异常枚举对象
     */
    public static BizErrorCode getByCode(String code) {
        for (BizErrorCode bizErrorCode : values()) {
            if (StringUtils.equals(bizErrorCode.getCode(), code)) {
                return bizErrorCode;
            }
        }

        return null;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }
}
